home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / PLUS4 / plus4disk1.d64 / ch1.10 neatn < prev    next >
Text File  |  2009-01-03  |  6KB  |  96 lines

  1. Ç*NB"1:CH1.10  NEATN"
  2. Ç*SP0:LM8:RM62:PP66:PG59
  3. Ç*VP3:HL8:HR72:HD0:├16/+4: ╬┼┴╘Çú╬╒═┬┼╥╙                ,,╙ECTION XX
  4. Ç*HS2:------------------------------------,,----------
  5. Ç*FT0:-----------------------,,----------
  6. Ç*FS3:(C) 1984 ┼LIZABETH ─EAL,,         Ç#
  7. ╙ECTION
  8. Ç*LN2:CN1
  9. ╬┼┴╘Çú╬╒═┬┼╥╙
  10. Ç*LN2:CN0
  11.      ╨RINTING NUMBERS HAS TO BE NEAT OR THEY ARE DIFFICULT TO READ. ╠ET'S LOOK AT THE VARIATIONS OF OUTPUT THIS COMPUTER CAN DO:
  12.  
  13. Ç*CN1;--- ┼╓╧╠╒╘╔╧╬ ╧╞ ╬╒═┬┼╥ ╨╥╔╬╘╔╬╟ ---Ç*CN0
  14.  
  15.      ┘OU ARE LUCKY TO HAVE A COMPUTER WHICH IS CAPABLE OF FORMATTING NUMBERS. "╞ORMATTING" IS JARGON MEANING "PRINTING UNDER CONTROL OF A PATTERN COMMAND", OR "PRINTING IN NEAT-LOOKING COLUMNS". ┼ARLIER MODELS OF ├OMMODORE COMPUTERS JUST COULDN'T DO IT. ╘HIS PROGRAM SHOWS THREE STAGES IN THE EVOLUTION OF PRINTING NUMBERS:
  16.  
  17. // PRG:  NUMBER OUTPUT //
  18.  
  19. Ç*FP3
  20. ***  ╓┴╥╔┴┬╠┼╙  ***
  21.  
  22. ╩  THE NUMBER WE USE IN CALCULATIONS
  23.  
  24. ***  ╔╬╙╘╥╒├╘╔╧╬╙  ***
  25.  
  26.      ╥╒╬ IT. ╔T STOPS BY ITSELF WHEN ALL THE NUMBERS HAVE BEEN PRINTED.
  27.  
  28. ***  ─┼╘┴╔╠╙  ***
  29.  
  30.      ╠INES 110-120 PRINT THREE NUMBERS ACROSS: VALUE OF ╩ (0,30,60 AND SO ON UP TO 150), ITS SQUARE AND IT'S SQUARE ROOT WITH ENTIRELY TOO MANY PLACES OF ACCURACY. ┴ SEMICOLON IS USED BETWEEN THE ITEMS IN THE ╨╥╔╬╘ STATEMENT. ╔T CAUSES COMPACT OUTPUT, BUT IS RATHER DIFFICULT ON THE EYES.
  31.  
  32.      ╠INES 130-140 PRINT THE SAME THING IN COMMA-PRODUCED COLUMNS. ╘HIS IS AN IMPROVEMENT, BUT STILL HAS ITS LIMITATIONS. ╘HE NUMBERS ARE "LEFT JUSTIFIED". ╘HIS MEANS THAT THEIR FIRST (LEFTMOST) DIGITS ARE PRINTED ONE UNDER ANOTHER. ╘HE DECIMAL POINTS IN THE LAST COLUMN ARE NOT ALIGNED ONE UNDER ANOTHER AND WE CAN ONLY FIT FOUR COLUMNS OF NUMBERS ON A SCREEN LINE. ╘HE "TOO MANY DIGITS" PROBLEM IS STILL WITH US.
  33.  
  34.      ╠INES 150-220 DO EVERYTHING NEATLY. ╘HE FIRST THREE ╨╥╔╬╘ ╒╙╔╬╟ STATEMENTS PUT OUT THE SAME DATA AS ABOVE. ┬UT THEY JUSTIFY THE NUMBERS, AND THEY EVEN ROUND THE NUMBERS CORRECTLY WHETHER THEY ARE POSITIVE OR NEGATIVE. ╬UMBER OF PLACES AFTER THE DECIMAL POINT CAN NOW BE REQUESTED (SEE LINE 180 - THIS ASKS FOR 3). ┼VERYTHING LOOKS NICE AND TIDY.
  35.  
  36.      ╘HE SIDE BENEFIT OF NEATNESS IS THAT YOU CAN PUT MUCH MORE INFORMATION ON A SCREEN LINE. ╙O JUST TO SEE HOW IT WORKS, LINE 190 INSERTS A FLOATING DOLLAR-SIGN, LINE 200 PRINTS NEGATIVE NUMBERS, AND LINE 210 PRINTS NEGATIVE NUMBERS ROUNDED OFF TO WHOLE NUMBERS.
  37.  
  38. // PIC: NUMOUT //
  39.  
  40.      ╘HIS IS A FANTASTIC FEATURE IN A COMPUTER, IT MAKES OUTPUT SO EASY! ┘OU CAN LEARN ABOUT MANY, MANY MORE NUMBER OUTPUT FEATURES BY READING THE DOCUMENTATION SUPPLIED WITH THE COMPUTER. ╠OOK UP ╨╥╔╬╘ ╒╙╔╬╟ AND ╨╒─┼╞, THE LATTER PERMITS YOU TO DEFINE CERTAIN SYMBOLS, WHICH AREN'T INCLUDED HERE.
  41.  
  42.      ╘HE FORMATTING DATA CAN BE DEFINED AS A CHARACTER STRING.
  43.  
  44. ╞$="###":╨╥╔╬╘ ╒╙╔╬╟ ╞$;╓     PRINTS INTEGERS 3 LETTERS WIDE.
  45.  
  46. ═ULTIPLE ASSIGNMENTS CAN BE PLACED IN A STRING, SO LONG AS THEY ARE SOMEHOW SEPARATED FROM ONE ANOTHER, FOR INSTANCE, BY A SPACE, HENCE:
  47.  
  48. ╞$="### ### ### ###.##":╨╥╔╬╘ ╒╙╔╬╟ ╞$;┴,┬,├,─ 
  49.  
  50. WILL PUT OUT THREE INTEGERS THREE-CHARACTERS LONG, AND A VALUE WITH TWO LETTERS AFTER A DECIMAL POINT, ALL FOUR BEING SEPARATED BY SPACES.
  51.  
  52.      ╨╥╔╬╘ ╒╙╔╬╟ CAN ALSO BE USED IN NEAT OUTPUT OF CHARACTER STRINGS (ALSO CALLED LITERALS, IF YOU'RE INTO NEW VOCABULARY). ╘HIS, TOO, IS SHOWN IN THE MANUAL.
  53.  
  54. Ç*CN1;--- ╒╬╔╓┼╥╙┴╠ ╬╒═┬┼╥ ╞╧╥═┴╘╘┼╥ ---Ç*CN0
  55.  
  56.      ╘IME TRAVEL BACKWARDS:
  57.  
  58.      ╙OME DAY YOU MAY BE WORKING WITH ANOTHER ├OMMODORE COMPUTER, OR ANOTHER BRAND OF A COMPUTER, OR YOU MAY BE WORKING WITH THE ├╚┴╥ COMMAND IN THIS COMPUTER. ╨╥╔╬╘ ╒╙╔╬╟ MAY NOT BE AVAILABLE. ┬UT THERE ARE ALTERNATIVE WAYS OF DOING THE SAME THING. ╘HIS, UNIVERSAL, NUMBER FORMATTING ROUTINE WAS WRITTEN BY ╩IM ┬UTTERFIELD LONG AGO FOR THE ╨┼╘ COMPUTER, BUT IT WORKS IN ALL MACHINES.
  59.  
  60. // PRG: PRINT USING //
  61.  
  62. Ç*FP6
  63. ***  ╓┴╥╔┴┬╠┼╙  ***
  64.  
  65. ╓   IS THE NUMBER TO BE PRINTED
  66. ╓1  IS HOW MANY PLACES LEFT OF THE DECIMAL POINT.
  67. ╓2  IS HOW MANY PLACES RIGHT OF THE DECIMAL POINT
  68.     IT CAN BE ZERO.
  69.  
  70. ***  ╔╬╙╘╥╒├╘╔╧╬╙  ***
  71.  
  72.      ╥╒╬ THE PROGRAM TO SEE A SELF-DEMO. ╔T STOPS AT THE END OF SOME TWENTY NUMBERS.
  73.  
  74. ***  ─┼╘┴╔╠╙  ***
  75.  
  76.      ╘HE MAIN PROGRAM IS A DEMO USING THE SUBROUTINE IN LINES BEGINNING WITH NUMBER 50000. ╘WENTY NUMBERS OF VARIOUS SIZES AND SHAPES ARE DEVELOPED IN LINE 120. ╠INES 130 TO 150 SET UP THE INFORMATION THAT THE SUBROUTINE NEEDS, CALL IT, AND ON RETURN PRINT THE RESULTS. ╘HE OUTPUT LOOKS LIKE THIS:
  77.  
  78. // PIC: PRT USING //
  79.  
  80. ╫HEN YOU SEE THE ASTERISKS, THEY FLAG WHAT'S CALLED OVERFLOW - A NUMBER IS TOO LARGE TO FIT ITS ASSIGNED SPOT.
  81.  
  82.      ╘HE FORMATTING SUBROUTINE FIRST ROUNDS THE NUMBERS BY ADDING 0.5, THIS ASSURES CORRECT ROUNDING, SO THAT A NUMBER SUCH AS 11.9 WILL PRINT AS 12 IN INTEGER FORM, OR NUMBER SUCH AS 11.229 WILL PRINT AS 11.23 IF THE FORMAT IS TWO DECIMAL PLACES. ╘HE FORMULA IN LINE 50020 TREATS THE NUMBER AS A WHOLE NUMBER. ╠INE 50030 "RIGHT JUSTIFIES" THE NUMBER IN STRING FORM. ╔F A WHOLE NUMBER IS REQUESTED IT IS MADE READY FOR PRINTING BY SKIPPING TO LINE 50080. ╚ERE, IF THE NUMBER IS TOO LARGE IT IS REPLACED BY A BUNCH OF ASTERISKS. ╧THERWISE, THE SUBROUTINE RETURNS WITH THE STRING FORM OF THE NUMBER READY TO BE PRINTED.
  83.  
  84.      ╔F THE NUMBER NEEDS DECIMAL PLACES, LINES 50050-50070 DECIDE ON THE LOCATION OF THE DECIMAL POINT, TAKE THE LEFT PART OF THE NUMBER, INSERT THE POINT WHERE IT IS NEEDED (AND, OR ADD WHATEVER DIGITS ARE NEEDED FROM THE ".000000" EXPRESSION) AND SEND THAT BACK TO THE MAIN PROGRAM.
  85.  
  86.      ╘HE ENTIRE SUBROUTINE THRIVES ON CLEVER AND COMPACT STRING MANIPULATION. ╔F YOU ARE INTERESTED IN LINE-BY-LINE DETAILS, YOU ╙╘╧╨ THE PROGRAM BY INSERTING THE WORD ╙╘╧╨ IN ANY PLACE YOU WISH. ┴T  THE BREAKPOINT, YOU CAN PRINT ALL THE CURRENT VALUES OF THE VARIABLES TO SEE HOW THEY BEHAVE UNDER DIFFERENT CONDITIONS.
  87.  
  88. ***  ╨╥╧╩┼├╘╙  ***
  89.  
  90. ┴N EQUIVALENT OF ╨╥╔╬╘ ╒╙╔╬╟"#####.##";╓ IS 
  91. ╓=SOME VALUE:╓1=5:╓2=2:╟╧╙╒┬ XXXXX:╨╥╔╬╘ ╓$;
  92.  
  93.      ╦NOWING THIS, YOU SHOULD BE ABLE TO DEFINE ANY NUMBER AND HAVE IT NEATLY PRINTED BY THE SUBROUTINE. ┼XPERIMENT!
  94.  
  95.      ═ANY PROGRAMS IN THIS BOOK DO NOT USE ╨╥╔╬╘ ╒╙╔╬╟ CONSISTENTLY, SO DON'T BE SURPRISED! ╫HEN INTEGERS ARE INVOLVED, IT'S JUST AS EASY TO PAD THE NUMBER ON THE LEFT WITH BLANKS. ┴ND IT MAKES THE CODE MORE EASILY TRANSPORTABLE BETWEEN THE ├OMMODORE COMPUTERS, AND SOME OF THESE ROUTINES DO RUN ON ALL OF THEM. ┬ESIDES, A BIT OF OLD-FASHIONED CODING HASN'T HURT ANYONE YET.
  96.